#!/bin/bash
#日期20200723
#editor by zyh
#版本v0.1
#用户手动输入要创建的角色是主master 还是从
echo "请输入keepalived的主从信息，如果是主，输入 master   如果是从，输入slave"
read  -p "请输入server的角色信息，主从信息 master  or slave  > " roleinfo  #设置服务器ip地址 
if [ ${roleinfo} == "master" ];then
   router_id=100
   state=MASTER
elif [ ${roleinfo} == "slave" ];then
   router_id=90
   state=BACKUP
else 
    echo "您输入的信息有误，请检查输入的是否正确"
    exit 0
fi

#设置服务器的虚地址vip，需要根据项目去调整  
vip=192.168.0.116
#服务器网卡
interface=ens33
OS=`cat /etc/redhat-release|sed -r 's/.* ([0-9]+)\..*/\1/'`

#检测服务器是否可以上网，如果不可以退出
echo "检查网络是否可以访问外网,不能访问外网将停止脚本运行"
check_net=`curl -I -m 10 -o /dev/null -s -w %{http_code} www.baidu.com`
if [ ${check_net} -ne 200 ];then
	echo "请检查网络是否正常，能否访问外网"
	exit 1
fi

#安装keepalived软件

yum install  net-tools keepalived -y


#创建脚本存放目录
mkdir /etc/keepalived/scripts
#备份并替换keepalived配置文件
mv /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bak

#增加虚地址到配置文件
cat > /etc/keepalived/keepalived.conf << EOF
! Configuration File for keepalived

global_defs {
    notification_email {
        544198458@qq.com
    }
    notification_email_from sendmail@jqsoft.com
    smtp_server mail.jqsoft.com
    smtp_connect_timeout 30
    router_id LVS_DEVEL
}

vrrp_script chk_ngnix {
    script "/etc/keepalived/scripts/chk_nginx.sh"
    interval 2
    weight 1
}

vrrp_instance VI_1 {
    state ${state}
    interface ${interface}
    virtual_router_id ${router_id}
    priority 100
    garp_master_delay 30
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    track_script {
        chk_ngnix
    }
    virtual_ipaddress {
      ${vip}  
    }
}
EOF

#启动keepalived
if [ "$OS" == "7" ];then
	systemctl start keepalived
else
        service   keepalived  start
fi

#检测keepalived是否起来
status=`ps -ef |grep "keepalived"|grep -v "grep"`
if [ -z "${status}" ];then
   echo "请检查配置文件是否有问题"
else
  echo "您已经成功安装了keepalived"
fi
